﻿//===========================[ 8 / 1 / 2011 LVI ]=============================
//				Copyright c Vitaly Lyaschenko <SkyChameleon@gmail.com>
// 								Header file
// Purpose: менеджер файловых операций
//=============================================================================
#pragma once

#include "cFile.h"
#include <locale>

class cFileManager
{
	static std::vector<std::string> pathStackFile;

public:
	cFileManager();
	~cFileManager();
	// регистрация пути к данным
	static void regiserPath( const std::string &path );
	static std::string lookUpPath( const std::string &path );

	// общее количество путей к данным
	static int  getPathCount() { return int( pathStackFile.size() ); }
	static void printAllPaths();

	static void *getFileData( const std::string &fileName, const typeFile type = fBinary );
	static void writeFile( const std::string &fileName, char *data, size_t size, const typeFile type = fBinary );
	static void rewriteFile( const std::string &fileName, char *data, size_t size, const typeFile type = fBinary );

	// возвращает расширение файла
	static std::string extractFileExtension( const std::string &fileName );
	// возвращает имя файла без расширения
	static std::string extractFileName( const std::string &fileName );
	// возвращает имя файла с расширением
	static std::string extractFileNameEx(  const std::string &fileName );
	// возвращает файл в виде строки
	static std::string getFileAsString( const std::string &fileName );
};

///////////////////////////////////////////////////////////////////////////
// string -> widestring
std::wstring to_wstring( const std::string& in, std::locale loc  = std::locale() );
///////////////////////////////////////////////////////////////////////////
//  widestring -> string
std::string to_string( const std::wstring& in, std::locale loc = std::locale() );
wchar_t* to_wchar( const char *in_ch, std::locale loc  = std::locale() );